package com.xuedongzhilian.service;

import com.xuedongzhilian.dto.WordStudyDTO;
import com.xuedongzhilian.entity.WordStudy;

import java.util.List;

/**
 * <p>
 * 单词学习服务类
 * </p>
 *
 * @author 学动智联团队
 * @since 2025-10-14
 */
public interface IWordStudyService {

    /**
     * 添加单词学习记录
     * @param wordStudyDTO 单词学习DTO
     * @return 是否添加成功
     */
    boolean addWordStudy(WordStudyDTO wordStudyDTO);

    /**
     * 获取用户的单词学习记录
     * @param userId 用户ID
     * @return 单词学习记录列表
     */
    List<WordStudyDTO> getWordStudiesByUserId(Long userId);

    /**
     * 获取单词学习详情
     * @param wordId 单词ID
     * @param userId 用户ID
     * @return 单词学习详情
     */
    WordStudyDTO getWordStudyDetail(Long wordId, Long userId);

    /**
     * 更新单词学习记录
     * @param wordStudyDTO 单词学习DTO
     * @return 是否更新成功
     */
    boolean updateWordStudy(WordStudyDTO wordStudyDTO);

    /**
     * 删除单词学习记录
     * @param wordId 单词ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteWordStudy(Long wordId, Long userId);

    /**
     * 标记单词为已掌握
     * @param wordId 单词ID
     * @param userId 用户ID
     * @return 是否标记成功
     */
    boolean markWordAsMastered(Long wordId, Long userId);

    /**
     * 获取用户未掌握的单词
     * @param userId 用户ID
     * @param count 获取数量
     * @return 单词学习记录列表
     */
    List<WordStudyDTO> getUnmasteredWords(Long userId, int count);

    /**
     * 按难度等级获取用户未掌握的单词
     * @param userId 用户ID
     * @param count 获取数量
     * @param difficulty 难度等级：1-简单，2-中等，3-困难
     * @return 单词学习记录列表
     */
    List<WordStudyDTO> getUnmasteredWordsByDifficulty(Long userId, int count, Integer difficulty);
}